package com.helen.application;

import android.app.Application;
import android.content.Context;
import android.os.Build;
import android.os.Environment;
import android.os.StrictMode;

import com.helen.global.Constants;
import com.helen.shopping.BuildConfig;
import com.helen.shopping.R;
import com.helen.ui.MainActivity;
import com.mob.MobSDK;
import com.tencent.bugly.Bugly;
import com.tencent.bugly.beta.Beta;
import com.umeng.commonsdk.UMConfigure;
import com.weilu.pay.api.RxWxPay;
import com.zhouyou.http.EasyHttp;

import org.xutils.x;

import cn.jpush.android.api.JPushInterface;


/**
 * Created by yang on 2018/3/12.
 */

public class HelenApplication extends Application {
    public static final String APP_ID = "aa1211bb9f";
    private static HelenApplication INSTANCE;
    public static Context mContext;
    private static boolean debug;

    public synchronized static HelenApplication getInstance() {
        if (null == INSTANCE) {
            INSTANCE = new HelenApplication();
        }
        return INSTANCE;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
            StrictMode.setVmPolicy(builder.build());
        }
        mContext = this;
//        JPushInterface.setDebugMode(true); 	// 设置开启日志,发布时请关闭日志
        JPushInterface.init(this);     		// 初始化 JPush
        UMConfigure.init(this, "5b52d9eaf29d982b4d000349", "Umeng", UMConfigure.DEVICE_TYPE_PHONE, null);
        x.Ext.init(this);
        x.Ext.setDebug(BuildConfig.DEBUG);
        MobSDK.init(this);
        RxWxPay.init(this);
        EasyHttp.init(this);//默认初始化网络框架 //https://github.com/zhou-you/RxEasyHttp
        EasyHttp.getInstance()
                .debug("EasyHttp", true)
                //可以全局统一设置全局URL
                .setBaseUrl(Constants.APP_API_BASE)//设置全局URL
                .setConnectTimeout(15 * 1000);
        /**** Bugly版本升级设置说明开始*****/
        /**
         * true表示app启动自动初始化升级模块；
         * false不好自动初始化
         * 开发者如果担心sdk初始化影响app启动速度，可以设置为false
         * 在后面某个时刻手动调用
         */
        Beta.autoInit = true;

        /**
         * true表示初始化时自动检查升级
         * false表示不会自动检查升级，需要手动调用Beta.checkUpgrade()方法
         */
        Beta.autoCheckUpgrade = true;

        /**
         * 设置升级周期为60s（默认检查周期为0s），60s内SDK不重复向后天请求策略
         */
        Beta.initDelay = 1 * 1000;

        /**
         * 设置通知栏大图标，largeIconId为项目中的图片资源；
         */
        Beta.largeIconId = R.mipmap.update_logo;

        /**
         * 设置状态栏小图标，smallIconId为项目中的图片资源id;
         */
        Beta.smallIconId = R.mipmap.update_logo;


        /**
         * 设置更新弹窗默认展示的banner，defaultBannerId为项目中的图片资源Id;
         * 当后台配置的banner拉取失败时显示此banner，默认不设置则展示“loading“;
         */
        Beta.defaultBannerId = R.mipmap.update_logo;

        /**
         * 设置sd卡的Download为更新资源保存目录;
         * 后续更新资源会保存在此目录，需要在manifest中添加WRITE_EXTERNAL_STORAGE权限;
         */
        Beta.storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);

        /**
         * 点击过确认的弹窗在APP下次启动自动检查更新时会再次显示;
         */
        Beta.showInterruptedStrategy = true;

        /**
         * 只允许在MainActivity上显示更新弹窗，其他activity上不显示弹窗;
         * 不设置会默认所有activity都可以显示弹窗;
         */
        Beta.canShowUpgradeActs.add(MainActivity.class);


        /**
         * 已经接入Bugly用户改用上面的初始化方法,不影响原有的crash上报功能;
         * init方法会自动检测更新，不需要再手动调用Beta.checkUpdate(),如需增加自动检查时机可以使用Beta.checkUpdate(false,false);
         * 参数1： applicationContext
         * 参数2：appId
         * 参数3：是否开启debug
         */
        Bugly.init(getApplicationContext(), APP_ID, BuildConfig.DEBUG);
        /**** Bugly版本升级设置说明结束*****/

    }

    public static Context getAppContext() {
        return mContext;
    }

    private void setApplication(HelenApplication application) {
        INSTANCE = application;
    }

    public boolean isDebug() {
        return debug;
    }

    public void setDebug(boolean debug) {
        this.debug = debug;
    }
}
